#!/bin/bash
#
### BEGIN INIT INFO
# Provides:          mysql
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      $network $time
# Should-Stop:       $network $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/ Stop MySQL @DEB_PRODUCTNAMEC@ Server daemon
# Description:       This service script facilitates startup and shutdown of
#                    mysqld daemon throught its wrapper script mysqld_safe
### END INIT INFO
#

# Copyright (c) 2015, 2021, Oracle and/or its affiliates.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License, version 2.0,
# as published by the Free Software Foundation.
#
# This program is also distributed with certain software (including
# but not limited to OpenSSL) that is licensed under separate terms,
# as designated in a particular file or component or in included license
# documentation.  The authors of MySQL hereby grant you an additional
# permission to link the program and your derivative works with the
# separately licensed software that they have included with MySQL.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License, version 2.0, for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA

. /lib/lsb/init-functions
. /usr/share/mysql/mysql-helpers
cd /
umask 077

# In case server is taking more to start or stop increase the timeout here
STARTTIMEOUT=180
STOPTIMEOUT=60

# We need to check that the binaries exist; When upgrading from community to commercial this
# script will be run after community is removed but before commercial is installed
VERSION="unknown"
if pathfind mysqld; then
	VERSION=$(mysqld --version | grep mysqld | cut -d' ' -f4)
fi

MYSQLRUN=/var/run/mysqld
MYSQLDATA=$(get_mysql_option mysqld datadir "/var/lib/mysql")
MYSQLFILES=/var/lib/mysql-files
MYSQLKEYRING=/var/lib/mysql-keyring
MYSQLLOG=/var/log/mysql

case "$1" in
  'start')
	if [ "$(get_running)" -eq 1 ];
	then
		log_action_msg "A MySQL Server is already started"
	else
		verify_ready
		verify_database

		@DEB_INIT_APPARMOR@

		su - mysql -s /bin/bash -c "mysqld_safe > /dev/null &"
		verify_server start
		if [ "$?" -eq 0 ];
		then
			log_action_msg "MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} is started"
		else
			log_action_msg "MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} did not start. Please check logs for more details."
		fi
	fi
	;;

  'stop')
	if [ "$(get_running)" -eq 1 ];
	then
		killall -u mysql
		verify_server stop
		if [ "$?" -eq 0 ];
		then
			log_action_msg "MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} is stopped"
		else
			log_action_msg "Attempt to shutdown MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} timed out"
		fi
	else
		log_action_msg "MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} is already stopped"
	fi
	;;

  'restart'|'reload'|'force-reload')
	log_action_msg "Stopping MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION}"
	$0 stop
	log_action_msg "Re-starting MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION}"
	$0 start
	;;

  'status')
	if [ "$(get_running)" -eq 1 ];
	then
		log_action_msg "MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} is running"
	else
		log_action_msg "MySQL @DEB_PRODUCTNAMEC@ Server ${VERSION} is not running"
		exit 3
	fi
	;;

  *)
	echo "Usage: $SELF start|stop|restart|reload|force-reload|status"
	exit 1
	;;
esac

exit 0
